/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002-2006 * Sleepycat Software. All rights reserved. * * $Id: JarMain.java,v 1.1 2006/05/06 09:00:28 ckaestne Exp $ */ package com.sleepycat.je.utilint; import java.lang.reflect.Method; /** * Used as the main class for the manifest of the je.jar file, and so it is * executed when running: java -jar je.jar. The first argument must be the * final part of the class name of a utility in the com.sleepycat.je.util * package, e.g., DbDump. All following parameters are passed to the main * method of the utility and are processed as usual. * * Apart from the package, this class is ambivalent about the name of the * utility specified; the only requirement is that it must be a public static * class and must contain a public static main method. */ public class JarMain { private static final String USAGE = "usage: java <utility> [options...]"; private static final String PREFIX = "com.sleepycat.je.util."; public static void main(String[] args) { try { if (args.length < 1) { usage("Missing utility name"); } Class cls = Class.forName(PREFIX + args[0]); Method mainMethod = cls.getMethod ("main", new Class[] { String[].class }); String[] mainArgs = new String[args.length - 1]; System.arraycopy(args, 1, mainArgs, 0, mainArgs.length); mainMethod.invoke(null, new Object[] { mainArgs }); } catch (Throwable e) { usage(e.toString()); } } private static void usage(String msg) { System.err.println(msg); System.err.println(USAGE); System.exit(-1); } }